#include <bits/stdc++.h>

using namespace std;

int matrix[10][10];
int num = 1;

bool check(int x,int y) {
    // 检查同行
    for (int j = 1; j <= 8; j++) { // 从1到n
        if (matrix[x][j] == 1) {
            return false; // 找到同行有1，返回false
        }
    }

    // 检查同列
    for (int i = 1; i <= 8; i++) { // 从1到n
        if (matrix[i][y] == 1) {
            return false; // 找到同列有1，返回false
        }
    }

    for(int i = 1;i <= 8;i ++) {
        for(int j = 1;j <= 8;j++) {
            if(i-j == x - y && matrix[i][j]) return false;
        }
    }

    for(int i = 1;i <= 8;i++) {
        for(int j = 1;j <= 8;j++) {
            if (i+j == x + y && matrix[i][j]) return false;
        }
    }

    return true; // 如果所有方向都没有找到1，返回true

}

void search(int step) {
    if(step == 9) {
        cout << "No. " << num << endl;
        for(int i = 1;i <= 8;i++) {
            for(int j = 1;j <= 8;j++) {
                cout << matrix[j][i] << " ";
            }
            cout << endl;
        }
        num++;
        return;
    }
    for(int i = 1;i <= 8;i++) {
        if(check(step,i)) {
            matrix[step][i] = 1;
            search(step+1);
            matrix[step][i] = 0;
        }
    }
}

int main() {
    search(1);
}